package com.itlong.cloud.property.service;

import com.itlong.cloud.POJO.DTO.property.PropertyProjectGetPropertyInfoBrowseStatusDTO;
import com.itlong.cloud.POJO.DTO.property.PropertyProjectGetPropertyInfoDTO;
import com.itlong.cloud.POJO.VO.property.PropertyProjectPropertyInfoBrowseStatusVO;
import com.itlong.cloud.POJO.VO.property.PropertyProjectPropertyInfoVO;
import com.itlong.cloud.utils.page.Page;

import java.util.Map;

/**
 * <desc>
 *      物业投诉、物业报修、物业通知与便民信息 信息处理接口.
 * </desc>
 *
 * @createDate 2017-10-13
 */
public interface IPropertyPropertyInfoService {

    /**
     * <desc>
     *      单条查询 物业信息
     * <desc/>
     *
     * @param propertyInfoId 查询参数
     * @return
     * @author ZiXuan
     * @createDate 2017-12-01
     */
    PropertyProjectPropertyInfoVO getOnePropertyInfo(String propertyInfoId) throws Exception;

    /**
     * <desc>
     *      分页查询  物业投诉，物业报修，物业通知与便民信息
     * <desc/>
     *
     * @param pageDTO 分页查询  信息DTO
     * @return
     * @author ZiXuan
     * @createDate 2017-10-10
     */
    Page<PropertyProjectPropertyInfoVO> getPage(PropertyProjectGetPropertyInfoDTO pageDTO) throws Exception;

    /**
     * <desc>
     *      保存 物业信息。
     * <desc/>
     *
     * @param  saveDTO 请求参数
     * @return
     * @author ZiXuan
     * @createDate 2017-10-26
     */
    Integer savePropertyInfo(PropertyProjectGetPropertyInfoDTO saveDTO) throws Exception;

    /**
     * <desc>
     *      修改 物业信息。
     * <desc/>
     *
     * @param  updateDTO 请求参数
     * @return
     * @author ZiXuan
     * @createDate 2017-10-26
     */
    Integer updatePropertyInfo(PropertyProjectGetPropertyInfoDTO updateDTO) throws Exception;

    /**
     * <desc>
     *      删除物业信息。
     * <desc/>
     *
     * @param propertyInfoIds 物业信息ID列表
     * @return 返回影响行数
     * @author ZiXuan
     * @createDate 2017-11-02
     */
    Integer deletePropertyInfo(String propertyInfoIds) throws Exception;


    /**
     * <desc>
     *      分页查询  物业信息浏览状态
     * <desc/>
     *
     * @param pageDTO 分页查询  信息DTO
     * @return
     * @author ZiXuan
     * @createDate 2017-12-21
     */
    Page<PropertyProjectPropertyInfoBrowseStatusVO> getPropertyInfoBrowseStatusPage(PropertyProjectGetPropertyInfoBrowseStatusDTO pageDTO) throws Exception;

    /**
     * <desc>
     *      保存 物业信息浏览状态
     * <desc/>
     *
     * @param  saveDTO 请求参数
     * @return
     * @author ZiXuan
     * @createDate 2017-12-21
     */
    Integer savePropertyInfoBrowseStatus(PropertyProjectGetPropertyInfoBrowseStatusDTO saveDTO) throws Exception;

    /**
     * <desc>
     *      获取投诉记录列表
     * </desc>
     *
     * @param projectId 项目编号
     * @param pageIndex 当前页数(每页15条)
     * @param userId 用户id
     * @return 投诉记录列表
     * @author wangzhi
     * @createDate 2019/06/17
     */
    Map<String,Object> getComplaintList(String projectId, String pageIndex, String userId) throws Exception;

    /**
     * <desc>
     *      获取投诉详情
     * </desc>
     *
     * @param msgId 投诉记录ID
     * @return 投诉详情
     * @author wangzhi
     * @createDate 2019/06/17
     */
    Map<String,Object> getComplaintDetail(String msgId) throws Exception;
}
